{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "73bcdc29",
   "metadata": {},
   "source": [
    "## 调用igraph库函数生成任意度分布指数的无标度网络"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "1e3e7fff",
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import igraph as ig"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "e9dfc4f1",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义求度分布的函数(注意是针对igraph类型的图)\n",
    "def get_pdf_igraph(G):\n",
    "    all_k = G.degree()\n",
    "    k = list(set(all_k))  # 获取所有可能的度值\n",
    "    N = len(all_k)\n",
    "\n",
    "    Pk = []\n",
    "    for ki in sorted(k):\n",
    "        c = 0\n",
    "        for i in G.vs:\n",
    "            if G.degree(i) == ki:\n",
    "                c += 1\n",
    "        Pk.append(c / N)\n",
    "\n",
    "    return sorted(k), Pk"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "87f85009",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100000 300000\n"
     ]
    }
   ],
   "source": [
    "N = 100000\n",
    "avk = 6.0\n",
    "L = int(avk*N/2)\n",
    "gamma = 2.1\n",
    "\n",
    "G = ig.Graph.Static_Power_Law(N, L, gamma)\n",
    "print(G.vcount(), G.ecount())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "772c8a0d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 600x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "k, Pk = get_pdf_igraph(G)\n",
    "Pck = np.array([sum(Pk[i:]) for i in range(len(Pk))])\n",
    "\n",
    "plt.figure(figsize=(6, 4.8))\n",
    "plt.plot(k, Pk, 'ro-', label=\"pdf\")\n",
    "plt.plot(k, Pck, 'bs-', label=\"ccdf\")\n",
    "plt.xlabel(\"$k$\")\n",
    "# plt.ylabel(\"$p_k$\")\n",
    "plt.xscale(\"log\")\n",
    "plt.yscale(\"log\")\n",
    "plt.legend(loc=0)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e3d2b9fc",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
